import MySql from 'src/config/MySql';
import JWT from 'src/config/JWT';
import ConfigModule from 'src/config/ConfigModule';
import BullMQ, { AudioMQ, FlowProducerName } from 'src/config/BullMQ';
import { RegisterEmitter } from 'src/emitter/Emitter';
import { RegisterSchedule } from 'src/schedule/TimerService';
import { HttpModule } from '@nestjs/axios';
import { ThrottlerConfig } from 'src/config/Throttler';

const InitModule = (): Array<any> => {
    const moduleList = []
    // 项目环境配置解析
    moduleList.push(ConfigModule)
    // MySql
    moduleList.push(MySql)
    // JWT
    moduleList.push(JWT)
    // 定时器
    moduleList.push(RegisterSchedule)
    // 引入 bullmq 队列
    moduleList.push(BullMQ)
    // 注册一个 Audio 队列
    moduleList.push(AudioMQ)
    // 引入 event-emitter 事件模块
    moduleList.push(RegisterEmitter)
    // 引入 HTTP 请求
    moduleList.push(HttpModule)
    // 引入 HTTP 请求限速(节流)
    moduleList.push(ThrottlerConfig)

    return moduleList
};

export default InitModule()